package cn.kgm.controller;


import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;

import java.nio.charset.StandardCharsets;

/**
 * 使用简单消息模型，发送简单消息（不用设置就交换机，系统使用默认交换机执行）
 */
@Slf4j
public class HelloWorldDemoProcducer {
    public static void main(String[] args) throws Exception {
        log.info("rabitmq-sending..." );
        // 1.创建链接工厂
        ConnectionFactory factory = new ConnectionFactory();
        // 2.设置参数
        factory.setHost("localhost" );
        factory.setPort(5672);
        factory.setUsername("kagim" );
        factory.setPassword("kagim" );
        factory.setVirtualHost("/virtual-kagim" );
        // 3.创建链接
        Connection connection = factory.newConnection();
        // 4.创建通道（chanal）
        Channel channel = connection.createChannel();
        // 5.创建queue

//        String queue,  队列名称
//        boolean durable, 是否持久化
//        boolean exclusive,   是否独占
//        boolean autoDelete,  自动删除
//        Map<String, Object> arguments  参数
        channel.queueDeclare("hello_world", true, false, false, null);

        String hello = "hello dd";
        // String exchange   交换机,
        // String routingKey   路由规则,
        // boolean mandatory  ,
        // BasicProperties props 配置信息,
        // byte[] body   消息内容
        // 6.发送消息
        // routingKey ==> queue的名字，相当于指定到某个queue
        channel.basicPublish("", "hello_world", null, hello.getBytes(StandardCharsets.UTF_8));
        channel.close();
        connection.close();
    }
}
